package com.ruoyi.finance.service;

import com.ruoyi.finance.domain.WalmartProfitReport;
import com.ruoyi.walmart.domain.shipments.vo.ShipmentMatchVo;
import org.springframework.web.multipart.MultipartFile;

import java.math.BigDecimal;
import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * walmart账单报告Service接口
 */
public interface WalmartProfitReportService {
    /**
     * 查询walmart账单列表
     */
    List<WalmartProfitReport> selectPaymentMasterVotList(WalmartProfitReport walmartProfitReport);
    /**
     * 自动生成唯一的报表编号，格式：WALM2025040301
     */
    String generateReportCode();
    /**
     * 解析CSV并获取数据
     */
    Map<String, Object> parseCSV(List<String[]> records, Long authId, String nickName, BigDecimal rate) throws ParseException;
    /**
     * 上传walmart仓储费账单
     */
    Map<String, Object> parseStorageFeeCSV(List<String[]> records, Long wprId, String nickName);
    /**
     * 上传walmart调整费账单
     */
    Map<String, Object>  parseAdjustmentsCSV(List<String[]> records, Long wprId, String nickname);
    /**
     * 上传walmart广告费账单
     */
    Map<String, Object>  parseProductAdvertisingCSV(List<String[]> records, Long wprId, String nickname);
    /**
     * 上传walmart 库存对对账单（期末数据）
     */
    Map<String, Object> parseInventoryReconciliationCSV(List<String[]> records, Long wprId, String nickname);
    /**
     * walmart匹配列表（成本、头程）
     */
    List<ShipmentMatchVo> selectShipmentMatchVotList(ShipmentMatchVo shipmentMatch);
    /**
     * 上传二次销售商品
     */
    void uploadWalmartShipmentStockAgain(MultipartFile file, Long authId);
    /**
     * 初始化数据
     */
    void uploadInitData(MultipartFile file);
    /**
     * 上传walmart 库存对对账单（销售及调整）
     */
    Map<String, Object> parseInventoryLoadingReconciliationCSV(List<String[]> records, Long wprId, String nickname);

    /**
     * 更新关联货件配对表，匹配表，账单头程
     */
     void updateShipmentStockFirstLeg(String stockId);
}
